package org.mzy.pet.service.impl;

import org.mzy.basic.service.impl.BaseServiceImpl;
import org.mzy.pet.domain.PetType;
import org.mzy.pet.mapper.PetTypeMapper;
import org.mzy.pet.service.IPetTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author mzy
 * @since 2022-10-28
 */
@Service
public class PetTypeServiceImpl extends BaseServiceImpl<PetType> implements IPetTypeService {
    @Autowired
    private PetTypeMapper petTypeMapper;

    @Override
    public List<PetType> petTypeTree() {
        // 查询所有宠物类型数据
        List<PetType> petTypes = petTypeMapper.findAll();
        // 将集合数据转换为HashMap，key是id，value是petType
        Map<Long, PetType> typeMap = petTypes.stream().collect(Collectors.toMap(PetType::getId, item -> item));
        // 创建一个空集合来保存数据
        List<PetType> list = new ArrayList<>();
        // 遍历所有宠物类型数据
        for (PetType petType : petTypes) {
            // 如果没有上级类型，那么直接放入集合
            if (petType.getPid() == null) {
                list.add(petType);
            } else {
                // 否则根据上级类型的id，获取到上级部门数据
                PetType type = typeMap.get(petType.getPid());
                // 如果这个数据不为空，则放入上级类型的对应子类型中
                if (type != null) {
                    type.getChildren().add(petType);
                }
            }
        }
        System.out.println(list);
        // 返回这个集合
        return list;
    }
}
